import Vue from "vue";
import Vuex from "vuex";
import app from "./Modules/app";
import login from "./Modules/login";
import common from "../store/Modules/common";
import infoDetail from "../store/Modules/infoDetail";

Vue.use(Vuex);

export default new Vuex.Store({
    //state是存储单一状态，存储基本的数据
    //gitters是store的计算属性，对store进行加工，类computed getters返回的值会根据她的依赖缓存起来，只有当她的依赖值发生改变才被重新计算
    //mutation提价更改数据，使用store.commit方法更改store的存储状态
    //action是个装饰器，提交mutation，而不是直接更改状态
    //modules是store的分割模块，每个模块拥有自己的state、mutation、action、getters
    modules: {
        app,
        login,
        common,
        infoDetail
    } 

});

//命令空间

/* 
浏览器端储存
cookie.js  
存储 cookie.set('key','value')  cookie.set({'key1':'value1','key2':'value'})
获取 cookie.get('key','value')  cookie.get({'key1','key2'})
清除 cookie.remove('key1') cookie,remove('key','value') cookie.remove(['key1','key2'])

HTML5本储存
sessionStorage(关闭浏览器即清除) 临时性  
存储 window.sessionStorage.setIten=m("key","value") 
获取 window.sessionStorage.getItem("key")
清除 window.sessionStorage.removeItem("key")
清除所有 sessionStorage.clear()

localStorage(手动清除) 长期性
存储 window.localStorage.setIten=m("key","value") 
获取 window.localStorage.getItem("key")
清除 window.localStorage.removeItem("key")
清除所有 localStorage.clear()
*/

/* 
action 异步
action与mutation类似，去变更state的状态 有两点不同
1、action处理异步操作，mutation处理同步操作，而action不受这个限制，即可以处理异步，又可以处理同步
2、action改变状态，最后是通过提交mutation
   this.$store.dispatch(actionName)
3、角色定位基于流程顺序，
  mutation专注于修改state，理论上是修改state的唯一途径
  action 业务代码，异步请求
*/

//modules是store的分割模块，每个模块拥有自己的state、mutation、action、getters
